9528
9906
Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека. В настоящее время он не принимает ответы.
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.
Закрыт 4 года назад.
Уточните этот вопрос
Я создаю приложение Shiny, которое обрабатывает несколько текстовых файлов, выбранных пользователем.
На выходе получается огромный фрейм данных с миллионами строк и десятками столбцов.
Теперь мне интересно разрешить пользователю интерактивно фильтровать строки, выбирать столбцы и суммировать столбцы (выбирая из списка функций, таких как среднее значение, sd, max, min, sum и т. Д.). Результатом будет меньший фрейм данных, суммирующий данные для каждого выбора пользователя - в основном мне нужно создать графический интерфейс, который реализует базовые функции библиотеки dplyr.
В общем, я знаю, как это сделать, вручную создав несколько элементов графического интерфейса и загрузив их в функцию сервера с помощью ряда команд dplyr. Поскольку это, кажется, довольно стандартная функциональность (графический интерфейс, который фильтрует и обобщает фрейм данных), прежде чем я начну создавать его с нуля, мне интересно, есть ли что-нибудь «готовое», я могу использовать КАК ЕСТЬ или как отправную точку . 
Я знаю, вы сказали, что rpivotTable - это не совсем то, что вам нужно, но я думаю, что его можно настроить для выполнения некоторых тяжелых работ,
Вот пример (использование rpivotTable для манипуляции, DT для отображения data.frame, rvest для анализа innerHTML из DOM, может быть лучший формат данных для передачи объекта таблицы со стороны клиента, но это доказательство концепции ):
ui.R
библиотека (блестящая)
библиотека (DT)
библиотека (rpivotTable)
FullPage <- fluidPage (
DT :: dataTableOutput ('aSummaryTable'),
rpivotTableOutput ('РЕЗУЛЬТАТЫ')
)
Полная страница
server.R:
библиотека (блестящая)
библиотека (rpivotTable)
библиотека (DT)
библиотека (рвест)
функция (ввод, вывод, сеанс) {
# Сделайте несколько примеров данных
qbdata <- реактивный ({
expand.grid (БУКВЫ, 1: 3)
})
# Очистить html и сохранить как реактивный
summarydf <- eventReactive (input $ myData, {
ввод $ myData%>%
read_html%>%
html_table (fill = TRUE)%>%
# Оказывается, в rpivotTable две таблицы, нам нужна вторая
. [[2]]
})
# показать df как DT :: datatable
вывод $ aSummaryTable <- DT :: renderDataTable ({
datatable (summarydf (), rownames = FALSE)
})
# Когда конфигурация обновляется, перезванивать с содержимым таблицы
output $ RESULTS <- renderRpivotTable ({
rpivotTable (
qbdata (),
onRefresh =
htmlwidgets :: JS ("функция (конфигурация) {
Shiny.onInputChange ('myData', document.getElementById ('РЕЗУЛЬТАТЫ'). InnerHTML);
} ")
)
})
}
|
Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками r dplyr shiny или задайте свой вопрос.